
import Vue from 'vue'
import Vuex from 'vuex'
import * as u from '@/util/util'
//打开的标签页
import menuTab from './modules/menuTab';
// 挂载vuex
Vue.use(Vuex)


const store =new Vuex.Store({
  // 全局属性变量
  state: {
    //用户信息
    userInfo:u.getSession("userInfo"),
    //缓存大屏是否可以移动
    screenMove:true,
    //标记主面板加载完成
    initOk:false,
    //面板dom
    panelDom:{
      component:[],
    },
    //面板的$ref对象
    panelRefs:null,
    //选中的组件
    chooseComponent:null,
  },
  // 全局同步方法, 调用方法,this.$store.commit("xxx")
  mutations: {
    //设置用户信息
    setUserInfo(state,data){
      state.userInfo = data
    },
    //设置大屏面板
    setPanelDom(state,data){
      state.panelDom = data
    },
    //设置面板的refs对象
    setPanelRefs(state,data){
      state.panelRefs = data
    },
    //设置面板的聚焦
    setPanelFocus(state){
      state.panelRefs.focus()
    },

    //设置大屏选中组件
    setChooseComponent(state,data){
      if(state.screenMove==true){
        state.panelRefs.focus()
        state.chooseComponent = data
      }else{
        state.chooseComponent=null;
      }
    },
    //删除选中组件
    delChooseComponent(state){
      if(state.screenMove==true){
        for (let i = 0; i < state.panelDom.component.length; i++) {
          if (state.panelDom.component[i].uuid == state.chooseComponent.uuid) {
            state.chooseComponent=null;
            state.panelDom.component.splice(i, 1)
          }
        }
      }
    },

    //大屏加载完成
    setInitOk(state,data){
      state.initOk = data
    },
    //大屏可以移动操作
    setScreenMove(state,data){
      state.screenMove = data
    }
  },
  // 异步方法 调用方法,this.$store.dispatch("xxx")
  actions: {
  },
  // Vuex属性计算,在视图里面当变量使用
  getters: {
  },
  // 模块化注册
  modules: {
    menuTab
  }
})

export default store
